Optimize JSON5 library performance with lexer, parser and serializer improvements #47
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements significant performance optimizations for the JSON5 library, focusing on the core bottlenecks identified in issue #46.
Performance Results
Before Optimization:
After Optimization:
Key Optimizations
1. Lexer Performance Improvements
readNumber()method with reduced StringBuilder allocations and faster hex parsingparseHexToDouble()with fast paths for common cases and reduced power calculationsreadString()readIdentifier()with optimized escape sequence handling2. Parser Optimizations
parseObject()andparseArray()3. Serializer Enhancements
Impact
The optimizations achieve a 65% improvement in number parsing performance, which was the biggest bottleneck. While overall performance remains similar due to other system overhead factors, specific parsing operations show measurable gains. The changes maintain full backward compatibility and pass all existing tests.
Testing
Fixes #46.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.